home *** CD-ROM | disk | FTP | other *** search
/ Resource for Source: C/C++ / Resource for Source - C-C++.iso / misc_src / knowhow4 / marker.cpp < prev    next >
C/C++ Source or Header  |  1995-11-01  |  5KB  |  125 lines

  1. #include "marker.h"
  2.  
  3. void show_marker(int type, loc pos, int attr, int size)
  4.     {
  5.     setcolor(attr);
  6.     setfillstyle(SOLID_FILL, attr);
  7.     switch(type)
  8.         {
  9.         case BAR:
  10.             bar(pos.X - size, pos.Y - size, pos.X + size, pos.Y + size);
  11.             break;
  12.         case CIRCLE:
  13.             pieslice(pos.X, pos.Y, 0, 360, size);
  14.             break;
  15.     case TRIANGLE:
  16.             int points[] = { pos.X - size, pos.Y + size,
  17.                              pos.X + size, pos.Y + size,
  18.                              pos.X, pos.Y - size,
  19.                              pos.X - size, pos.Y + size };
  20.             fillpoly(4, points);
  21.             break;
  22.     case STAR5:
  23.             int points1[] = { pos.X - 2 * size / 3, pos.Y + size,
  24.                               pos.X, pos.Y + size / 3,
  25.                   pos.X + 2 * size / 3, pos.Y + size,
  26.                   pos.X + size / 2, pos.Y + size / 4,
  27.                   pos.X + size, pos.Y - size / 3,
  28.                               pos.X + size / 3, pos.Y - size / 3,
  29.                               pos.X, pos.Y - size,
  30.                               pos.X - size / 3, pos.Y - size / 3,
  31.                   pos.X - size, pos.Y - size / 3,
  32.                   pos.X - size / 2, pos.Y + size / 4,
  33.                               pos.X - 2 * size / 3, pos.Y + size
  34.                   };
  35.             fillpoly(11, points1);
  36.             break;
  37.     case STAR6:
  38.             int points2[] = { pos.X, pos.Y - size,
  39.                               pos.X + size / 2, pos.Y - size / 2,
  40.                               pos.X + size, pos.Y - size / 2,
  41.                               pos.X + 3 * size / 4, pos.Y,
  42.                               pos.X + size, pos.Y + size / 2,
  43.                               pos.X + size / 2, pos.Y + size / 2,
  44.                               pos.X, pos.Y + size,
  45.                               pos.X - size / 2, pos.Y + size / 2,
  46.                               pos.X - size, pos.Y + size / 2,
  47.                               pos.X - 3 * size / 4, pos.Y,
  48.                               pos.X - size, pos.Y - size / 2,
  49.                               pos.X - size / 2, pos.Y - size / 2,
  50.                               pos.X, pos.Y - size };
  51.             fillpoly(13, points2);
  52.             break;
  53.         case NONE:
  54.         putpixel(pos, attr);
  55.             break;
  56.     case CROSS:
  57.             bar(pos.X - size / 2, pos.Y - size,
  58.             pos.X + size / 2, pos.Y + size);
  59.             bar(pos.X - size, pos.Y - size / 2,
  60.             pos.X + size, pos.Y + size / 2);
  61.             break;
  62.     case X_CROSS:
  63.             int points3[] = { pos.X, pos.Y - size / 2,
  64.                               pos.X + size / 2, pos.Y - size,
  65.                               pos.X + size, pos.Y - size / 2,
  66.                               pos.X + size / 2, pos.Y,
  67.                               pos.X + size, pos.Y + size / 2,
  68.                               pos.X + size / 2, pos.Y + size,
  69.                               pos.X, pos.Y + size / 2,
  70.                               pos.X - size / 2, pos.Y + size,
  71.                               pos.X - size, pos.Y + size / 2,
  72.                               pos.X - size / 2, pos.Y,
  73.                               pos.X - size, pos.Y - size / 2,
  74.                               pos.X - size / 2, pos.Y - size,
  75.                               pos.X, pos.Y - size / 2 };
  76.             fillpoly(13, points3);
  77.             break;
  78.  
  79.     case DIAMOND:
  80.             int points4[] = { pos.X, pos.Y - size,
  81.                               pos.X + size, pos.Y,
  82.                               pos.X, pos.Y + size,
  83.                               pos.X - size, pos.Y,
  84.                               pos.X, pos.Y - size };
  85.             fillpoly(5, points4);
  86.             break;
  87.     case TRIANGLE2:
  88.             int points5[] = { pos.X - size, pos.Y + size,
  89.                              pos.X + size, pos.Y + size,
  90.                              pos.X, pos.Y - size,
  91.                              pos.X - size, pos.Y + size };
  92.             drawpoly(4, points5);
  93.             break;
  94.     case BAR2:
  95.             rectangle(pos.X - size, pos.Y - size, pos.X + size, pos.Y + size);
  96.             break;
  97.     case CIRCLE2:
  98.             circle(pos.X, pos.Y, size);
  99.             break;
  100.         default:
  101.             break;
  102.     }
  103.     }
  104.  
  105. /*
  106. void main()
  107.     {
  108.     int gdriver = DETECT, gmode;
  109.     initgraph(&gdriver, &gmode, "");
  110.  
  111.     show_marker(BAR, loc(20, 100), YELLOW, 8);
  112.     show_marker(CIRCLE, loc(40, 100), YELLOW, 8);
  113.     show_marker(TRIANGLE, loc(60, 100), YELLOW, 8);
  114.     show_marker(STAR5, loc(80, 100), YELLOW, 8);
  115.     show_marker(NONE, loc(100, 100), YELLOW, 8);
  116.     show_marker(STAR6, loc(120, 100), YELLOW, 8);
  117.     show_marker(CROSS, loc(140, 100), YELLOW, 8);
  118.     show_marker(X_CROSS, loc(160, 100), YELLOW, 8);
  119.     show_marker(DIAMOND, loc(180, 100), YELLOW, 8);
  120.     show_marker(TRIANGLE2, loc(200, 100), YELLOW, 8);
  121.     show_marker(BAR2, loc(220, 100), YELLOW, 8);
  122.     show_marker(CIRCLE2, loc(240, 100), YELLOW, 8);
  123.     closegraph();
  124.     }
  125. */